<template>
  <div class="app-container">
    <uc-table url="admin/workOrder/getWorkOrderPage" ref="maintenanceOrderTable" name="维保工单" table-border pageable
              :search-form="searchForm">
      <template slot="searchForm">
        <el-form size="mini" :inline="true" :model="searchForm" class="demo-form-inline filter-container">
          <!--搜索输入框-->
          <el-form-item>
            <el-input type="text" v-model="searchForm.name" placeholder="请输入工单名称" clearable
                      @clear="clearInput1()"></el-input>
          </el-form-item>
          <el-form-item v-if="enterPriseHidden">
            <el-select v-model="searchForm.enterpriseId" placeholder="请选择所属企业" style="width: 100%" clearable
                       @clear="clearInput()">
              <el-option v-for="(item,index) in enterpriseDominantList" :key="index" :value="item.ucId"
                         :label="item.name"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-select v-model="searchForm.status" placeholder="请选择工单状态" style="width: 100%" clearable
                       @clear="clearInput()">
              <el-option v-for="(item,index) in statusList" :key="index" :value="item.id"
                         :label="item.name"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
            <el-date-picker
                v-model="addTimeList"
                type="daterange"
                align="right"
                unlink-panels
                value-format="yyyy-MM-dd"
                range-separator="至"
                start-placeholder="开始日期"
                end-placeholder="结束日期"
                :picker-options="pickerOptions">
            </el-date-picker>
          </el-form-item>
          <!--搜索按钮-->
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" class="filter-item" @click="handleSearch()">查询</el-button>
            <el-button type="success" icon="el-icon-plus" class="filter-item" @click="handleAdd()">新增</el-button>
          </el-form-item>
        </el-form>
      </template>
      <template slot="columns">
        <el-table-column prop="enterpriseName" label="所属企业" align="left"
                         :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="name" label="名称" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="address" label="地点" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="equipmentName" label="工单设备" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="remark" label="工单描述" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="status" label="工单状态" align="left" :show-overflow-tooltip="true" :formatter="statusFormat"/>
        <el-table-column prop="reportPersonName" label="上报人" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="addTime" label="生成时间" align="left" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="address" label="操作" width="270" align="left" class-name="small-padding fixed-width">
          <template slot-scope="scope">
            <!--编辑按钮-->
            <el-button size="mini" icon="el-icon-edit" type="primary" @click="handleEdit(scope.row)">编辑</el-button>
            <el-button size="mini" icon="el-icon-info" type="success" @click="handleInfo(scope.row)">详情</el-button>
            <el-button size="mini" type="danger" icon="el-icon-delete" :loading="deleteLoading"
                       @click="handleDelete(scope.row)">删除
            </el-button>
          </template>
        </el-table-column>
      </template>
    </uc-table>
  </div>
</template>

<script>
import UcTable from "@/components/UcTable/index.vue";
import {getInEnterpriseDominantList} from "@/api/enterpriseDominant";
import {deleteInWorkOrder} from "@/api/workOrder";


export default {

  name: "list",
  components: {UcTable},
  data() {
    return {
      searchForm: {},
      enterpriseDominantList: [],
      deleteLoading: false,
      statusList: [],
      addTimeList:[],
      //快捷日期
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > Date.now();
        },
        shortcuts: [{
          text: '15天内',
          onClick(picker) {
            const end = new Date();
            const start = new Date();
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 15);
            picker.$emit('pick', [start, end]);
          }
        }, {
          text: '15天-30天',
          onClick(picker) {
            const end = new Date();
            end.setTime(end.getTime() - 3600 * 1000 * 24 * 15);
            const start = new Date();
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
            picker.$emit('pick', [start, end]);
          }
        }, {
          text: '30天-三个月',
          onClick(picker) {
            const end = new Date();
            end.setTime(end.getTime() - 3600 * 1000 * 24 * 30);
            const start = new Date();
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
            picker.$emit('pick', [start, end]);
          }
        }]
      },
    }
  },
  created() {
    this.getInEnterpriseDominantList()
    this.getDicts("work_order_status").then(response => {
      this.statusList = response.data.data;
    });
    console.log(this.statusList)
  },
  computed: {
    enterPriseHidden() {
      let roleCode = this.$store.getters.roleCode;
      return roleCode == "ADMIN" || roleCode == "XT-ADMIN" || roleCode == "ZD-ADMIN" || roleCode == "DD-ADMIN" || roleCode == "JW-ADMIN"
    }
  },
  methods: {
    statusFormat(row){
      return this.selectDictLabel(this.statusList,row.status)
    },
    handleSearch() {
      this.searchForm.startDate = null
      this.searchForm.endDate = null
      if(this.addTimeList){
        this.searchForm.startDate = this.addTimeList[0]
        this.searchForm.endDate = this.addTimeList[1]
      }
      if (this.searchForm.status == -1) {
        this.searchForm.status = null
      }
      this.$refs.maintenanceOrderTable.getTableData(1)
    },
    getInEnterpriseDominantList() {
      getInEnterpriseDominantList({deleted: false}).then(res => {
        this.enterpriseDominantList = res.data
      })
    },
    handleAdd() {
      this.$router.push("/workOrder/maintenanceEdit")
    },
    handleEdit(val) {
      console.log(val)
      this.$router.push("/workOrder/maintenanceEdit?ucId=" + val.ucId)
    },
    handleInfo(val) {
      this.$router.push("/workOrder/maintenanceInfo?ucId=" + val.ucId)
    },
    clearInput() {
      //清除输入框
      this.searchForm.enterpriseId = null
      this.handleSearch()
    },
    clearInput1() {
      //清除输入框
      this.searchForm.enterpriseId = null
      this.handleSearch()
    },
    handleDelete(val) {
      this.$confirm('您确定要执行删除' + val.name + '这条工单吗？', '提醒信息', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.deleteLoading = true
        deleteInWorkOrder(val).then(res => {
          this.deleteLoading = false
          this.$notify.success({
            title: '成功',
            message: "删除工单成功"
          })
          this.handleSearch(this.tabValue)
        }).catch(res => {
          this.deleteLoading = false
          this.$notify.error({
            title: '失败',
            message: res.msg
          })
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
  }
}
</script>

<style
    scoped>

</style>
